package com.shop.item.atom.atomsvc;

import com.shop.common.model.InputBean;
import com.shop.common.model.ServiceBean;
import com.shop.common.model.param.item.ItemBaseInput;
import com.shop.common.model.param.item.ItemDetailsInput;
import com.shop.common.model.result.item.ItemBaseOutput;
import com.shop.common.model.result.item.ItemDetailsOutput;
import com.shop.item.api.model.Item;

import java.util.List;
import java.util.Map;

/**
 * @Author zhoulk
 * @Description //TODO 商品信息原子服务
 * @Date 20:40 2019/3/11
 *
 * @Param
 * @return
 * @errorCode //TODO
 **/
public interface IItemAtomService {
    /**
     * @Author zhoulk
     * @Description //新增商品
     * @Date 10:54 2019/1/16
     *
     * @Param [paramModel]
     * @return com.shop.common.model.ResultModel<?>
     * @errorCode //TODO
     **/
    ServiceBean<Integer> addItemBase(ItemBaseInput itemBase);

    /**
     * @Author zhoulk
     * @Description //新增商品详情
     * @Date 16:21 2019/1/16
     *
     * @Param [paramModel]
     * @return com.shop.common.model.ResultModel<?>
     * @errorCode //TODO
     **/
    ServiceBean<Integer> addItemDetails(ItemDetailsInput itemDetails);

    /**
     * @Author zhoulk
     * @Description //删除商品
     * @Date 11:10 2019/1/16
     *
     * @Param [paramModel]
     * @return com.shop.common.model.ResultModel<?>
     * @errorCode //TODO
     **/
    ServiceBean<String> deleteItemBase(ItemBaseInput itemBase);

    /**
     * @Author zhoulk
     * @Description //删除商品
     * @Date 11:10 2019/1/16
     *
     * @Param [paramModel]
     * @return com.shop.common.model.ResultModel<?>
     * @errorCode //TODO
     **/
    ServiceBean<String> deleteItemDetails(ItemDetailsInput itemDetails);

    /**
     * @Author zhoulk
     * @Description //查询商品基本信息
     * @Date 17:46 2019/3/8
     *
     * @Param [itemBase]
     * @return com.shop.common.model.ResultModel<com.shop.common.entity.item.ItemBase>
     * @errorCode //TODO
     **/
    ServiceBean<ItemBaseOutput> selectItemBase(ItemBaseInput itemBase);

    /**
     * @Author zhoulk
     * @Description //查询商品详情
     * @Date 11:11 2019/1/16
     *
     * @Param [paramModel]
     * @return com.shop.common.model.ResultModel<?>
     * @errorCode //TODO
     **/
    ServiceBean<ItemDetailsOutput> selectItemDetails(ItemDetailsInput itemDetails);


    /**
     * @Author zhoulk
     * @Description //更新商品基本信息
     * @Date 11:11 2019/1/16
     *
     * @Param [paramModel]
     * @return com.shop.common.model.ResultModel<?>
     * @errorCode //TODO
     **/
    ServiceBean<String> updateItemBase(ItemBaseInput paramModel);

    /**
     * @Author zhoulk
     * @Description //更新商品详情
     * @Date 17:47 2019/3/8
     *
     * @Param [paramModel]
     * @return com.shop.common.model.ResultModel<java.lang.String>
     * @errorCode //TODO
     **/
    ServiceBean<String> updateItemDetails(ItemDetailsInput paramModel);

    ServiceBean<List<ItemBaseOutput>> selectItemBaseList(InputBean<ItemBaseInput> inputBean);

    /**
     * @Author zhoulk
     * @Description //查询商品列表
     * @Date 11:11 2019/1/16
     *
     * @Param [paramModel]
     * @return com.shop.common.model.ResultModel<?>
     * @errorCode //TODO
     **/
    ServiceBean<List<Item>> selectItemList(InputBean<ItemBaseInput> inputBean);

    /**
     * @Author zhoulk
     * @Description //分页查询商品列表
     * @Date 11:11 2019/1/16
     *
     * @Param [paramModel]
     * @return com.shop.common.model.ResultModel<?>
     * @errorCode //TODO
     **/
    ServiceBean<Map<String, Object>> selectItemList4P(InputBean<ItemBaseInput> inputBean);


    /**
     * @Author zhoulk
     * @Description //修改商品状态
     * @Date 21:20 2019/3/10
     *
     * @Param [paramModel]
     * @return com.shop.common.model.ResultModel<java.lang.String>
     * @errorCode //TODO
     **/
    ServiceBean<String> mdfItemStatus(ItemBaseInput paramModel);

    ServiceBean<String> deleteItemBaseByIds(List<Integer> ids);

    ServiceBean<String> deleteItemDetailsByIds(List<Integer> ids);

    ServiceBean<List<ItemDetailsOutput>> qryItemDetailList(ItemDetailsInput itemDetailsInput);
}
